###fixture中的返回值传递给测试函数
import pytest

class Fruit:
    def __init__(self, name):
        self.name = name
        self.cubed = False

    def cube(self):
        self.cubed = True


class FruitSalad:
    def __init__(self, *fruit_bowl):
        self.fruit = fruit_bowl
        self._cube_fruit()

    #私有
    def _cube_fruit(self):
        #[Fruit("apple"), Fruit("banana")]
        for fruit in self.fruit:
            #将self.cubed 设置为 True
            fruit.cube()


@pytest.fixture
def fruit_bowl():
    return [Fruit("apple"), Fruit("banana")]



# 这里测试函数接收到fixture函数fruit_bowl的返回值，[Fruit("apple"), Fruit("banana")]，并使用
def test_fruit_salad(fruit_bowl):
    fruit_salad = FruitSalad(*fruit_bowl)

    # python内置函数all()，用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE，
    assert all(fruit.cubed for fruit in fruit_salad.fruit)